package com.xk._03真题骗._02链表;

import com.xk._03真题骗._00bean.ListNode;

/*
 * @description: https://leetcode.cn/problems/remove-linked-list-elements/
 * @author: xu
 * @date: 2022/10/27 7:14
 */
public class _203移除链表元素 {
    /*
    * https://leetcode.cn/problems/remove-linked-list-elements/
    * 给你一个链表的头节点 head 和一个整数 val，
    * 请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点。
    * */
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) return null;
        // 新链表的头结点：虚拟头结点
        ListNode newHead = new ListNode(0, head);
        // 新链表的尾结点
        ListNode newTail = newHead;
        while (head != null) {
            if (head.val != val) {
                newTail.next = head;
                newTail = head;
            }
            head = head.next;
        }
        newTail.next = null;
        return newHead.next;
    }
}
